impl Solution {
    pub fn split_string(s: String) -> bool {
        let ss=s.as_bytes();
        let r=ss.len();
        for i in 0..r-1 {
            let aim :i64=s[0..=i].parse().unwrap_or(-1);
            let res=Solution::dfs(i+1, aim-1, ss);
            if res{
                return  res;
            }
        };
        false
    }
    fn dfs(mut i :usize,aim:i64,ss :&[u8])->bool{
        if i==ss.len(){
            return true;
        }
        if aim<0{
            return false;
        }
        let mut t=0;
        if aim==0 {
            return ss[i..].iter().all(|v|{*v==b'0'});
        }
        while t<aim{
            t*=10;
            t+=(ss[i]-&b'0') as i64;
            i+=1;
            if i>=ss.len(){
                break;
            }
        }
        if t==aim{
            return Solution::dfs(i,aim-1,ss);
        }else{
            false
        }
        
    }
    
}